package main

import "fmt"

type Goods struct {
	Name  string
	Price float64
}

type Brand struct {
	Name string
	Addr string
}

// TV 多重继承 ，尽量不使用！！
type TV struct {
	Goods
	Brand
}

// PC 多重继承 ，尽量不使用！！
type PC struct {
	*Goods
	*Brand
}

// main
//
//	@Description: 多重继承
func main() {
	tv1 := TV{Goods{"电视001", 5000.00}, Brand{"海尔", "重庆"}}
	fmt.Println(tv1) //{{电视001 5000} {海尔 重庆}}

	tv2 := TV{Goods{Name: "电视002", Price: 5999.00}, Brand{Name: "小米", Addr: "北京"}}
	fmt.Println(tv2) //{{电视002 5999} {小米 北京}}

	pc := PC{&Goods{Name: "电脑002", Price: 4999.00}, &Brand{Name: "联想", Addr: "天津"}}
	fmt.Println(pc)        //{0xc0000081c8 0xc0000303e0}
	fmt.Println(*pc.Goods) //{电脑002 4999}
	fmt.Println(*pc.Brand) //{联想 天津}

}
